home *** CD-ROM | disk | FTP | other *** search
-
- ASSUME cs:_TEXT, DS:SEPDATA
-
- SEPDATA SEGMENT WORD 'DATA'
-
- public map, lmapX, lmapY, pmapX, pmapY, imagelist
- public notile,corner,allwhite, allblue
- public allred,road,grass,overwrite
-
- ; Tiles to draw
- overwrite db 123
- notile db 000h, 000h, 000h, 000h
- db 000h, 000h, 000h, 000h
- db 000h, 000h, 000h, 000h
- db 000h, 000h, 000h, 000h
-
- corner db 055h, 055h, 040h, 000h
- db 040h, 000h, 040h, 000h
- db 040h, 000h, 040h, 000h
- db 040h, 000h, 040h, 000h
-
- allwhite db 0FFh, 0FFh, 0FFh, 0FFh
- db 0FFh, 0FFh, 0FFh, 0FFh
- db 0FFh, 0FFh, 0FFh, 0FFh
- db 0FFh, 0FFh, 0FFh, 0FFh
-
- allblue db 055h, 055h, 055h, 055h
- db 055h, 055h, 055h, 055h
- db 055h, 055h, 055h, 055h
- db 055h, 055h, 055h, 055h
-
- allred db 0AAh, 0AAh, 0AAh, 0AAh
- db 0AAh, 0AAh, 0AAh, 0AAh
- db 0AAh, 0AAh, 0AAh, 0AAh
- db 0AAh, 0AAh, 0AAh, 0AAh
-
- road db 000h, 000h, 000h, 000h
- db 003h, 0C0h, 000h, 000h
- db 000h, 000h, 003h, 0C0h
- db 000h, 000h, 000h, 000h
-
- grass db 055h, 055h, 0DDh, 055h
- db 055h, 055h, 057h, 075h
- db 075h, 055h, 057h, 055h
- db 055h, 055h, 055h, 0D5h
-
- swamp db 055h, 055h, 0CCh, 055h
- db 055h, 055h, 053h, 035h
- db 035h, 055h, 053h, 055h
- db 055h, 055h, 055h, 0C5h
-
- include brick.asm
- include tree11.asm
- include tree12.asm
- include tree13.asm
- include tree21.asm
- include tree22.asm
- include tree23.asm
- include tree31.asm
- include tree32.asm
- include tree33.asm
- include smtree.asm
- include dead1a.asm
- include dead1b.asm
- include dead1c.asm
- include dead1d.asm
-
- include rocket1.asm
- include rocket2.asm
- include rocket3.asm
- include rocket4.asm
- include rocket5.asm
- include rocket6.asm
- include rocket7.asm
- include rocket8.asm
- include shot84.asm
- include cannonbl.asm
- include mach8.asm
- include mach16.asm
- include laser15.asm
- include laser26.asm
- include laser37.asm
- include laser48.asm
-
- include boom1.asm
- include boom2.asm
- include boom3.asm
- include boom4.asm
- include booma1.asm
- include booma2.asm
- include booma3.asm
- include booma4.asm
-
- include tank1d2a.asm
- include tank1d2b.asm
- include tank1d2c.asm
- include tank1d2d.asm
- include tank1d4a.asm
- include tank1d4b.asm
- include tank1d4c.asm
- include tank1d4d.asm
- include tank1d6a.asm
- include tank1d6b.asm
- include tank1d6c.asm
- include tank1d6d.asm
- include tank1d8a.asm
- include tank1d8b.asm
- include tank1d8c.asm
- include tank1d8d.asm
- include tank11a.asm
- include tank11b.asm
- include tank11c.asm
- include tank11d.asm
- include tank13a.asm
- include tank13b.asm
- include tank13c.asm
- include tank13d.asm
- include tank15a.asm
- include tank15b.asm
- include tank15c.asm
- include tank15d.asm
- include tank17a.asm
- include tank17b.asm
- include tank17c.asm
- include tank17d.asm
- include tank21a.asm
- include tank21b.asm
- include tank21c.asm
- include tank21d.asm
- include tank23a.asm
- include tank23b.asm
- include tank23c.asm
- include tank23d.asm
- include tank25a.asm
- include tank25b.asm
- include tank25c.asm
- include tank25d.asm
- include tank27a.asm
- include tank27b.asm
- include tank27c.asm
- include tank27d.asm
- include tank22a.asm
- include tank22b.asm
- include tank22c.asm
- include tank22d.asm
- include tank24a.asm
- include tank24b.asm
- include tank24c.asm
- include tank24d.asm
- include tank26a.asm
- include tank26b.asm
- include tank26c.asm
- include tank26d.asm
- include tank28a.asm
- include tank28b.asm
- include tank28c.asm
- include tank28d.asm
-
- include tank31a.asm
- include tank31b.asm
- include tank31c.asm
- include tank31d.asm
- include tank33a.asm
- include tank33b.asm
- include tank33c.asm
- include tank33d.asm
- include tank35a.asm
- include tank35b.asm
- include tank35c.asm
- include tank35d.asm
- include tank37a.asm
- include tank37b.asm
- include tank37c.asm
- include tank37d.asm
- include tank32a.asm
- include tank32b.asm
- include tank32c.asm
- include tank32d.asm
- include tank34a.asm
- include tank34b.asm
- include tank34c.asm
- include tank34d.asm
- include tank36a.asm
- include tank36b.asm
- include tank36c.asm
- include tank36d.asm
- include tank38a.asm
- include tank38b.asm
- include tank38c.asm
- include tank38d.asm
-
- imagelist dw notile ; pointers to images
- dw corner
- dw allwhite
- dw allblue
- dw allred
- dw road
- dw grass
- dw swamp
-
- dw brick
- dw notile ; unused
- dw notile ; unused
- dw dead1a
- dw dead1b
- dw dead1c
- dw dead1d
- dw tree11
- dw tree12
- dw tree13
- dw tree21
- dw tree22 ; ---
- dw tree23
- dw tree31
- dw tree32
- dw tree33
-
- dw smtree
-
- dw cannonbl
- dw rocket1
- dw rocket2
- dw rocket3
- dw rocket4
-
- dw rocket5
- dw rocket6
- dw rocket7
- dw rocket8
- dw mach8
-
- dw mach16
- dw laser15
- dw laser26
- dw laser37
- dw laser48
-
- dw tank1d8a
- dw tank1d8b
- dw tank1d8c
- dw tank1d8d
- dw tank1d2a
- dw tank1d2b
- dw tank1d2c
- dw tank1d2d
- dw tank1d4a
- dw tank1d4b
- dw tank1d4c
- dw tank1d4d
- dw tank1d6a
- dw tank1d6b
- dw tank1d6c
- dw tank1d6d
- dw tank11a
- dw tank11b
- dw tank11c
- dw tank11d
- dw tank13a
- dw tank13b
- dw tank13c
- dw tank13d
- dw tank15a
- dw tank15b
- dw tank15c
- dw tank15d
- dw tank17a
- dw tank17b
- dw tank17c
- dw tank17d
-
- dw boom1
- dw boom2
- dw boom3
- dw boom4
- dw booma1
- dw booma2
- dw booma3
- dw booma4
-
- dw tank21a
- dw tank21b
- dw tank21c
- dw tank21d
- dw tank23a
- dw tank23b
- dw tank23c
- dw tank23d
- dw tank25a
- dw tank25b
- dw tank25c
- dw tank25d
- dw tank27a
- dw tank27b
- dw tank27c
- dw tank27d
- dw tank22a
- dw tank22b
- dw tank22c
- dw tank22d
- dw tank24a
- dw tank24b
- dw tank24c
- dw tank24d
- dw tank26a
- dw tank26b
- dw tank26c
- dw tank26d
- dw tank28a
- dw tank28b
- dw tank28c
- dw tank28d
-
- dw tank31a
- dw tank31b
- dw tank31c
- dw tank31d
- dw tank33a
- dw tank33b
- dw tank33c
- dw tank33d
- dw tank35a
- dw tank35b
- dw tank35c
- dw tank35d
- dw tank37a
- dw tank37b
- dw tank37c
- dw tank37d
- dw tank32a
- dw tank32b
- dw tank32c
- dw tank32d
- dw tank34a
- dw tank34b
- dw tank34c
- dw tank34d
- dw tank36a
- dw tank36b
- dw tank36c
- dw tank36d
- dw tank38a
- dw tank38b
- dw tank38c
- dw tank38d
-
- dw 0
-
- maxmapX dw 120 ; Logical maximum map dimensions
- maxmapY dw 75
- lmapX dw 0 ; Logical top left corner
- lmapY dw 0 ; (lmapX, lmapY)
- pmaxX dw 40 ; physical screen maximums
- pmaxY dw 25
- pmapX db 0 ; Physical top left corner of screen
- pmapY db 0 ; (pmapX, pmapY)
- wsizeX dw 20 ; Physical window size
- wsizeY dw 12 ; (pmapX+wsizeX,pmapY+wsizeY)
-
- jtable dw 50 dup(0) ; Screen jump table to Y axis
- mapjtable dw 100 dup(0) ; Map jump table to each Y axis
-
- map db 9000 dup(?) ; Map array, lists which tile
- ; appears where.
- ; Each entry is an index into
- ; the imagelist file
-
- scrbuf db 16200 dup(?) ; Screen swap buffer
- SEPDATA ENDS
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
-
- PUBLIC _drawtile
- PUBLIC _inittables
- PUBLIC _regenscr
- PUBLIC _refreshscr
- PUBLIC _gotocga
- PUBLIC _setlogXY
- PUBLIC _setphyXY
- PUBLIC _setwindXY
- PUBLIC _setmapXY
- PUBLIC _capturescr
- PUBLIC _getmapXY
-
- _drawtile proc
- push bp
- mov bp,sp
- push ax
- push bx
- push si
- push di
- push ds
- push es
- push ax
-
- mov ax,OFFSET SEPDATA
- mov ds,ax
- mov es,ax
-
- xor ax,ax
- mov al,dh
- mov si,ax
- shl si,1
- add si,OFFSET jtable
- mov di,[si]
- mov al,dl
- shl ax,1
- add di,ax
- add di,OFFSET scrbuf
- pop ax
- push di
- mov si,ax
- mov ax,80-2
- ; Even Lines
- movsb
- movsb
- add di,ax
- movsb
- movsb
- add di,ax
- movsb
- movsb
- add di,ax
- movsb
- movsb
- ; Odd lines
- pop di
- mov bx,02000h
- add di,bx
- movsb
- movsb
- add di,ax
- movsb
- movsb
- add di,ax
- movsb
- movsb
- add di,ax
- movsb
- movsb
- pop es
- pop ds
- pop di
- pop si
- pop bx
- pop ax
- pop bp
- ret
- _drawtile endp
-
- _inittables proc
- ; Initilize the map table to 0 thru 8 alternately
- push bp
- mov bp,sp
- push si
- push cx
- push ax
- push ds
-
- mov ax,OFFSET SEPDATA
- mov ds,ax
-
- mov si,OFFSET map
- mov cx,9000
- mov ax,0
- fillmap: mov [si],al
- inc si
- inc ax
- cmp ax,9
- jnz contloop
- mov ax,0
- contloop:
- loop fillmap
-
- ; Let's initilize the jump table
- mov si,OFFSET jtable
- mov ax,0
- mov cx,25
- filltable:
- mov [si],ax
- add ax,320
- inc si
- inc si
- loop filltable
-
- ; Fill up Map jump table for Y coordinates
- mov si,OFFSET mapjtable
- mov ax,0
- mov cx,75
- ftable: mov [si],ax
- add ax,[maxmapX]
- inc si
- inc si
- loop ftable
-
- pop ds
- pop ax
- pop cx
- pop si
- pop bp
- ret
- _inittables endp
-
- _regenscr proc
- push bp
- mov bp,sp
- push si
- push ax
- push dx
- push bx
- push cx
- push di
- push es
- push ds
-
- cli
- mov ax,OFFSET SEPDATA
- mov ds,ax
-
- mov si,OFFSET mapjtable
- mov ax,[lmapY]
- shl ax,1
- add si,ax
- mov dx,[si]
- add dx,[lmapX]
- mov si,dx
- add si,OFFSET map
-
- ; SI now points to the first tile to be displayed at (pmapX,pmapY)
-
- mov bx,[wsizeY] ; Do this Y times
- mov dh,[pmapY] ; init physical Y axis
- doY:
- mov cx,[wsizeX] ; Set up for nested loop
- mov dl,[pmapX] ; init physical X axis
- push si
- doX:
- xor ax,ax
- mov al,[si] ; Get first map char
- inc si
- shl ax,1
- mov di,OFFSET imagelist
- add di,ax
- mov ax,[ds:di] ; Get image pointer into DX
-
- call _drawtile ; Draw the tile
-
- inc dl ; Do next X
-
- loop doX
-
- pop si
- add si,[maxmapX]
- inc dh
- dec bx
- jnz doY ; Do next Y
-
- sti
-
- pop ds
- pop es
- pop di
- pop cx
- pop bx
- pop dx
- pop ax
- pop si
- pop bp
- ret
- _regenscr endp
-
- _gotocga proc
- push bp
- mov bp,sp
- push ax
- push bx
-
- mov ah,0
- mov al,4
- int 10h
- mov ah,11
- mov bl,0
- mov bh,4
- int 10h
-
- pop bx
- pop ax
- pop bp
- ret
- _gotocga endp
-
- _setlogXY proc
- push bp
- mov bp,sp
- push ds
-
- mov ax,OFFSET SEPDATA
- mov ds,ax
- mov ax,[bp+4]
- mov [lmapX],ax
- mov ax,[bp+6]
- mov [lmapY],ax
-
- pop ds
- pop bp
- ret
- _setlogXY endp
-
- _setphyXY proc
- push bp
- mov bp,sp
- push ds
-
- mov ax,OFFSET SEPDATA
- mov ds,ax
- mov ax,[bp+4]
- mov [pmapX],al
- mov ax,[bp+6]
- mov [pmapY],al
-
- pop ds
- pop bp
- ret
- _setphyXY endp
-
- _setwindXY proc
- push bp
- mov bp,sp
- push ds
-
- mov ax,OFFSET SEPDATA
- mov ds,ax
- mov ax,[bp+4]
- mov [wsizeX],ax
- mov ax,[bp+6]
- mov [wsizeY],ax
-
- pop ds
- pop bp
- ret
- _setwindXY endp
-
- _setmapXY proc
- push bp
- mov bp,sp
- push ds
- push si
- push dx
-
- mov ax,OFFSET SEPDATA
- mov ds,ax
- mov si,OFFSET mapjtable
- mov ax,[bp+6]
- shl ax,1
- add si,ax
- mov dx,[si]
- add dx,[bp+4]
- mov si,dx
- add si,OFFSET map
- mov ax,[bp+8]
- cmp ax,0
- jz nope
- mov [si],al
-
- nope: pop dx
- pop si
- pop ds
- pop bp
- ret
- _setmapXY endp
-
- _getmapXY proc
- push bp
- mov bp,sp
- push ds
- push si
- push dx
-
- mov ax,OFFSET SEPDATA
- mov ds,ax
- mov si,OFFSET mapjtable
- mov ax,[bp+6]
- shl ax,1
- add si,ax
- mov dx,[si]
- add dx,[bp+4]
- mov si,dx
- add si,OFFSET map
- mov ah,0
- mov al,[si]
-
- pop dx
- pop si
- pop ds
- pop bp
- ret
- _getmapXY endp
-
- _refreshscr proc
- push bp
- mov bp,sp
- push ds
- push es
- push si
- push di
- push cx
-
- cli
- mov ax,OFFSET SEPDATA
- mov ds,ax
-
- mov ax,0B800h
- mov es,ax
- mov si,OFFSET scrbuf
- mov cx,16192
- mov di,0
- rep movsb
- sti
-
- pop cx
- pop di
- pop si
- pop es
- pop ds
- pop bp
- ret
-
- _refreshscr endp
-
- _capturescr proc
- push bp
- mov bp,sp
- push ds
- push es
- push si
- push di
- push cx
-
- cli
- mov ax,OFFSET SEPDATA
- mov es,ax
-
- mov ax,0B800h
- mov ds,ax
- mov si,0
- mov cx,16192
- mov di,OFFSET scrbuf
- rep movsb
- sti
-
- pop cx
- pop di
- pop si
- pop es
- pop ds
- pop bp
- ret
-
- _capturescr endp
-
-
-
- _TEXT ENDS
-
- END